package oas.db;

import java.util.List;

import oas.domain.User;
import oas.domain.Workcell;
import oas.web.PaginationSupport;

/**
 * 用户资源库接口
 *
 * @version 1.0.0
 */
public interface UserRepository {

    /**
     * 通过用户名查询用户
     *
     * @param userName 用户名
     * @return 用户
     */
    public User findByUserName(String userName);

    /**
     * 通过id查询用户
     *
     * @param userName 用户名
     * @return 用户
     */
    public User findById(int id);
    /**
     * 通过用户名和密码查询用户
     *
     * @param userName 用户名
     * @param password 密码
     * @return 用户
     */
    public User findByUserName(String userName, String password);

    /**
     * 更新用户个人信息
     *
     * @param user 用户新个人信息
     */
    public void updateUser(User user);

    /**
     * 修改密码
     *
     * @param id 用户名id
     * @param oldPassword 原密码
     * @param NewPassword 新密码
     */
    public boolean changePassword(Long id, String oldPassword, String NewPassword);

    /**
     * 添加一个员工
     * 
     * @param user 员工
     * @param user 员工
     * 
     */
    User addEmployee(User employee, String password);

    /**
     * 通过ID删除一个员工
     * 
     * @param id 用户ID
     */
    void deleteEmployeeByID(Long ID);
    
    /**
     * 更新员工信息，员工所有信息
     * @param user 员工
     * @return 员工
     */
    User updateEmployee(User employee);
    /**
     * 按照ID查询某一员工，
     * @param ID 员工ID
     * @return user 员工详细信息
     */
     
   
	User findEmployee(Long id);

	/**
	 * 返回部门及其子部门所有员工
	 * @param employee
	 * @return
	 */
	List<User> findWorkcellEmployees(User employee);
	/**
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PaginationSupport<User> findEmployeePage(User employee,int pageNo, int pageSize);

}
